/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Servicios.Dao.Impl;

import Entidades.Proforma;
import Servicios.Dao.ProformaDao;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author YOSS
 */
public class ProformaDaoImpl implements ProformaDao{
    Connection cn;
    
    public ProformaDaoImpl(Connection cn){
        this.cn = cn;
    }

    @Override
    public List<Proforma> buscarProforma() {
        
       List<Proforma> proformas= new ArrayList<Proforma>();
        String sql ="select * from PROFORMA";
       
        try {
            PreparedStatement pst = cn.prepareStatement(sql);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {             
                Proforma proforma = new Proforma();
                proforma.setIDProforma(rs.getString("IDPROFORMA"));
                proforma.setIDCotizacion(rs.getString("IDCOTIZACION"));
                proforma.setIDETV(rs.getString("IDETV"));
                proforma.setFechaRecepcion(rs.getDate("FECHEMISION"));
                proforma.setCosto(rs.getDouble("COSTO"));
                proforma.setCostoExceso(rs.getDouble("COSTOEXCESO"));
                proforma.setImpuestoCORPAC(rs.getDouble("IMPUESTOCORPAC"));
                proforma.setCostoTotal(rs.getDouble("COSTOTOTAL"));
                proforma.setFechaSalida(rs.getDate("FECHASALIDA"));
                proforma.setEstadoProforma(rs.getString("ESTADOPROFORMA"));                    
                proformas.add(proforma);
            }
        } catch (SQLException ex) {
            Logger.getLogger(ProformaDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        }
        
        return proformas;
    }

    @Override
    public List<Proforma> buscarProforma(String Estado) {
        List<Proforma> proformas= new ArrayList<Proforma>();
        String sql ="select * from PROFORMA where ESTADOPROFORMA ='"+ Estado+"' ";
       
        try {
            PreparedStatement pst = cn.prepareStatement(sql);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) { 
            
                Proforma proforma = new Proforma();
                proforma.setIDProforma(rs.getString("IDPROFORMA"));
                proforma.setIDCotizacion(rs.getString("IDCOTIZACION"));
                proforma.setIDETV(rs.getString("IDETV"));
                proforma.setFechaRecepcion(rs.getDate("FECHEMISION"));
                proforma.setCosto(rs.getDouble("COSTO"));
                proforma.setCostoExceso(rs.getDouble("COSTOEXCESO"));
                proforma.setImpuestoCORPAC(rs.getDouble("IMPUESTOCORPAC"));
                proforma.setCostoTotal(rs.getDouble("COSTOTOTAL"));
                proforma.setFechaSalida(rs.getDate("FECHASALIDA"));
                proforma.setEstadoProforma(rs.getString("ESTADOPROFORMA"));                    
                proformas.add(proforma);
            }
        } catch (SQLException ex) {
            Logger.getLogger(OrganoDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        }
        return proformas;
    }

    @Override
    public String calcularMaxID() {
        String sql = "select MAX(IDPROFORMA) maximo from proforma";
        String max="";
        try {
            PreparedStatement pst = cn.prepareStatement(sql);
            ResultSet rs = pst.executeQuery();
            while (rs.next()) {                
                max = rs.getString("maximo");
            }
            pst.close();
        } catch (SQLException ex) {
            Logger.getLogger(ProformaDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        }
        return max;
    }

    @Override
    public void registrarProforma(Proforma p) {
        String sql = "INSERT INTO proforma VALUES(?,?,?,?,?,?,?,?,?,?)";   
        Timestamp fechaSal = new Timestamp(p.getFechaSalida().getTime());
        Timestamp fechaRec = new Timestamp(p.getFechaRecepcion().getTime());
        try {
            PreparedStatement pst = cn.prepareStatement(sql);
            pst.setString(1, p.getIDProforma());
            pst.setString(2, p.getIDCotizacion());
            pst.setString(3, p.getIDETV());
            pst.setString(4, p.getEstadoProforma());
            pst.setDouble(5, p.getCosto());
            pst.setDouble(6, p.getCostoExceso());
            pst.setDouble(7, p.getImpuestoCORPAC());
            pst.setDouble(8, p.getCostoTotal());
            pst.setTimestamp(9, fechaSal);
            pst.setTimestamp(10, fechaRec);
            
            pst.executeUpdate();
            pst.close();
        } catch (SQLException ex) {
            Logger.getLogger(ProformaDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
}
